Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET 2008] Caricare una Form di una dll
Forum - C# / VB.NET - [VB.NET 2008] Caricare una Form di una dll

Avatar
rabinhood (Normal User)
Newbie


Messaggi: 17
Iscritto: 26/03/2010

Segnala al moderatore
Postato alle 16:10
Lunedì, 06/09/2010
Premesso che inizio ora a lavorare con le Dll. Ho creato un progetto "menu" in vb.net 2008 e una dll con funzioni e un form all'interno della stessa.
Chiedo come posso chiamare il form creato all'interno della dll dal progetto "menu".
La mia idea è di fare un menu come progetto e le varie form come dll che vengono lanciate dal menu
Ringrazio...

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 18:05
Lunedì, 06/09/2010
Ecco una parte di codice di un mio vecchio progetto:
Codice sorgente - presumibilmente VB.NET

  1. ''' <summary>
  2.     ''' Scansiona un assembly alla ricerca di un plugin e lo carica.
  3.     ''' </summary>
  4.     ''' <param name="DllPath">Percorso su disco dell'assembly da analizzare.</param>
  5.     ''' <returns>Restituisce un'istanza di TPlugin se l'assembly conteneva un plugin,
  6.     ''' altrimenti restituisce Nothing.</returns>
  7.     ''' <remarks>Viene caricato il primo tipo derivato da TPlugin.</remarks>
  8.     Friend Function ScanLibrary(ByVal DllPath As String) As TPlugin.TPlugin
  9.         Dim Asm As Assembly = Assembly.LoadFrom(DllPath)
  10.         Dim Result As TPlugin.TPlugin = Nothing
  11.  
  12.         For Each T As Type In Asm.GetTypes
  13.             If T.BaseType Is GetType(TPlugin.TPlugin) Then
  14.                 Dim TypeName As String = T.FullName
  15.                 Result = Asm.CreateInstance(TypeName)
  16.                 Result.InitData()
  17.             End If
  18.         Next
  19.  
  20.         Return Result
  21.     End Function


Nel tuo caso, ti basta sapere il nome della classe usata nella dll.
http://totemslair.org/guide/viewchapter.php?guida=vb&id=44
E successivi.

PM
Avatar
rabinhood (Normal User)
Newbie


Messaggi: 17
Iscritto: 26/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 12:01
Martedì, 07/09/2010
Ok per la classe, ma se ho creto il form in maniera grafica (aggiunto form alla dll) come posso chiamare la classe?

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 12:46
Martedì, 07/09/2010
Il form che disegni è una classe. Basta guardarne il nome.

PM
Avatar
rabinhood (Normal User)
Newbie


Messaggi: 17
Iscritto: 26/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:08
Martedì, 07/09/2010
Non mi mandare a quel paese, ho fatto il form via design e questo è il codice :

Codice sorgente - presumibilmente VB.NET

  1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
  2. Partial Class Home
  3.     Inherits System.Windows.Forms.Form
  4.  
  5.     'Form overrides dispose to clean up the component list.
  6.     <System.Diagnostics.DebuggerNonUserCode()> _
  7.     Protected Overrides Sub Dispose(ByVal disposing As Boolean)
  8.         Try
  9.             If disposing AndAlso components IsNot Nothing Then
  10.                 components.Dispose()
  11.             End If
  12.         Finally
  13.             MyBase.Dispose(disposing)
  14.         End Try
  15.     End Sub
  16.  
  17.     'Required by the Windows Form Designer
  18.     Private components As System.ComponentModel.IContainer
  19.  
  20.     'NOTE: The following procedure is required by the Windows Form Designer
  21.     'It can be modified using the Windows Form Designer.  
  22.     'Do not modify it using the code editor.
  23.     <System.Diagnostics.DebuggerStepThrough()> _
  24.     Public Sub InitializeComponent()
  25.         Me.MenuStrip = New System.Windows.Forms.MenuStrip
  26.         Me.NuovoMenuItem = New System.Windows.Forms.ToolStripMenuItem
  27.         Me.SelezioneToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
  28.         Me.ExitToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
  29.         Me.Label1 = New System.Windows.Forms.Label
  30.         Me.Label2 = New System.Windows.Forms.Label
  31.         Me.Sigla = New System.Windows.Forms.TextBox
  32.         Me.Descrizione = New System.Windows.Forms.TextBox
  33.         Me.MenuStrip.SuspendLayout()
  34.         Me.SuspendLayout()
  35.         '
  36.         'MenuStrip
  37.         '
  38.         Me.MenuStrip.Font = New System.Drawing.Font("Tahoma", 12.0!)
  39.         Me.MenuStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NuovoMenuItem, Me.SelezioneToolStripMenuItem, Me.ExitToolStripMenuItem})
  40.         Me.MenuStrip.Location = New System.Drawing.Point(0, 0)
  41.         Me.MenuStrip.Name = "MenuStrip"
  42.         Me.MenuStrip.Size = New System.Drawing.Size(697, 27)
  43.         Me.MenuStrip.TabIndex = 0
  44.         Me.MenuStrip.Text = "MenuStrip1"
  45.         '
  46.         'NuovoMenuItem
  47.         '
  48.         Me.NuovoMenuItem.Name = "NuovoMenuItem"
  49.         Me.NuovoMenuItem.Size = New System.Drawing.Size(67, 23)
  50.         Me.NuovoMenuItem.Text = "Nuovo"
  51.         '
  52.         'SelezioneToolStripMenuItem
  53.         '
  54.         Me.SelezioneToolStripMenuItem.Name = "SelezioneToolStripMenuItem"
  55.         Me.SelezioneToolStripMenuItem.Size = New System.Drawing.Size(87, 23)
  56.         Me.SelezioneToolStripMenuItem.Text = "Selezione"
  57.         '
  58.         'ExitToolStripMenuItem
  59.         '
  60.         Me.ExitToolStripMenuItem.Name = "ExitToolStripMenuItem"
  61.         Me.ExitToolStripMenuItem.Size = New System.Drawing.Size(47, 23)
  62.         Me.ExitToolStripMenuItem.Text = "Exit"
  63.         '
  64.         'Label1
  65.         '
  66.         Me.Label1.AutoSize = True
  67.         Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
  68.         Me.Label1.Location = New System.Drawing.Point(48, 68)
  69.         Me.Label1.Name = "Label1"
  70.         Me.Label1.Size = New System.Drawing.Size(111, 20)
  71.         Me.Label1.TabIndex = 1
  72.         Me.Label1.Text = "Sigla Provincia"
  73.         '
  74.         'Label2
  75.         '
  76.         Me.Label2.AutoSize = True
  77.         Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
  78.         Me.Label2.Location = New System.Drawing.Point(48, 111)
  79.         Me.Label2.Name = "Label2"
  80.         Me.Label2.Size = New System.Drawing.Size(92, 20)
  81.         Me.Label2.TabIndex = 2
  82.         Me.Label2.Text = "Descrizione"
  83.         '
  84.         'Sigla
  85.         '
  86.         Me.Sigla.Location = New System.Drawing.Point(179, 68)
  87.         Me.Sigla.MaxLength = 2
  88.         Me.Sigla.Name = "Sigla"
  89.         Me.Sigla.Size = New System.Drawing.Size(36, 20)
  90.         Me.Sigla.TabIndex = 3
  91.         '
  92.         'Descrizione
  93.         '
  94.         Me.Descrizione.Location = New System.Drawing.Point(179, 111)
  95.         Me.Descrizione.Name = "Descrizione"
  96.         Me.Descrizione.Size = New System.Drawing.Size(301, 20)
  97.         Me.Descrizione.TabIndex = 4
  98.         '
  99.         'Home
  100.         '
  101.         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
  102.         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
  103.         Me.ClientSize = New System.Drawing.Size(697, 327)
  104.         Me.Controls.Add(Me.Descrizione)
  105.         Me.Controls.Add(Me.Sigla)
  106.         Me.Controls.Add(Me.Label2)
  107.         Me.Controls.Add(Me.Label1)
  108.         Me.Controls.Add(Me.MenuStrip)
  109.         Me.Name = "Home"
  110.         Me.Text = "Home"
  111.         Me.MenuStrip.ResumeLayout(False)
  112.         Me.MenuStrip.PerformLayout()
  113.         Me.ResumeLayout(False)
  114.         Me.PerformLayout()
  115.  
  116.     End Sub
  117.     Friend WithEvents MenuStrip As System.Windows.Forms.MenuStrip
  118.     Friend WithEvents NuovoMenuItem As System.Windows.Forms.ToolStripMenuItem
  119.     Friend WithEvents ExitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
  120.     Friend WithEvents SelezioneToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
  121.     Friend WithEvents Label1 As System.Windows.Forms.Label
  122.     Friend WithEvents Label2 As System.Windows.Forms.Label
  123.     Friend WithEvents Sigla As System.Windows.Forms.TextBox
  124.     Friend WithEvents Descrizione As System.Windows.Forms.TextBox
  125. End Class



in questo caso cosa dovrei trovare per richiamare il form home nel progetto iniziale?

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 14:22
Martedì, 07/09/2010
Partial Class Home

PM
Avatar
rabinhood (Normal User)
Newbie


Messaggi: 17
Iscritto: 26/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:31
Martedì, 07/09/2010
Sono nel mio progetto iniziale, aggiunto la referenza alla dll di cui stiamo parlando, in una sub e digito:

nomedll. e mi mostra home
segue:
nomedll.home.???? ( mi aspettavo di trovare show o altri comandi similari ai classici form, ma non ci sono)

Seguirà una biraa offerta chiaramente. :)

PM
Avatar
rabinhood (Normal User)
Newbie


Messaggi: 17
Iscritto: 26/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 15:38
Martedì, 07/09/2010
Risolto, avevo dimenticato di dichiararlo. Veramente ottimo il tuo supporto.
Spero ci sarà modo di ricambiare. Ciao

PM